/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Mail;

import java.io.Serializable;

/**
 *
 * @author yonmigongora@gmail.com
 */
public class MailServer implements Serializable {

    public ListaMensajes listMessage;
    private int contador;

    /**
     * prepara al MailServer para poder funcionar.
     */
    public MailServer() {
        contador = 0;
        listMessage = new ListaMensajes();

    }

    /**
     * consulta el numero de mensajes esperando por leer
     *
     * @param name el nombre del usuario que los solicita
     * @return la cantidad de mensajes esperando leer.
     */
    public int getMessagesWaiting(String name) {
        int contadorMensajes = 0;
        for (int i = 0; i < listMessage.longitud(); i++) {
            Message mensaje = listMessage.obtenerMensaje(i);
            String destinatario = mensaje.obtenerDestinatario();
            contadorMensajes = contadorMensajes + comparar(name, destinatario);

        }
        return contadorMensajes;
    }

    private int comparar(String user, String destinatario) {
        int contadorMensajes = 0;
        if (user.equals(destinatario)) {
            contadorMensajes++;
        }
        return contadorMensajes;

    }

    /**
     * obtiene el siguiente mensaje del usuario
     *
     * @param name el nombre del usuario que los solicita
     * @return el siguiente mensaje del usuario.
     */
    public Message getNextMessage(String name) {
        boolean existe = false;
        Message msj = null;
        while (!existe) {
            msj = listMessage.obtenerMensaje(contador);
            String destinatario = msj.obtenerDestinatario();
            existe = destinatario.equals(name);
            contador = (contador + 1) % listMessage.longitud();
        }

        return msj;
    }

    /**
     * toma el mensaje del usuario y envia al destinatario
     *
     * @param message el contenido del mensaje del usuario
     */
    public void post(Message message) {
        listMessage.add(message);
    }

    public Message[] obtenerLista() {
        return listMessage.obtenerMensajes();
    }

}
